
/**
 * DateUtils
 */
function DUS() {}
// yyyymmdd

DUS.YMD = 1;

// yyyymmddhhmmss
DUS.YMDHMS = 2;

// yyyymmddhhmmsslll
DUS.YMDHMSL = 3;

// yyyy-mm-dd
DUS.Y_M_D = 4;

// yyyy.mm.dd
DUS.DOT_Y_M_D = 5;

// yyyy年mm月dd日
DUS.CN_Y_M_D = 6;

DUS.getString = function (_oPs) {
    var _sDate = "";
    var _oDate = new Date();
    if (_oPs.date) {
        _oDate = _oPs.date;
    }
    
    var _nM = _oDate.getMonth() + 1;
    var _sM = "" + (10 > _nM ? "0" + _nM : _nM);
    
    var _nD = _oDate.getDate();
    var _sD = "" + (10 > _nD ? "0" + _nD : _nD);
    
    var _nH = _oDate.getHours();
    var _sH = "" + (10 > _nH ? "0" + _nH : _nH);
    
    var _nMi = _oDate.getMinutes();
    var _sMi = "" + (10 > _nMi ? "0" + _nMi : _nMi);
    
    var _nS = _oDate.getSeconds();
    var _sS = "" + (10 > _nS ? "0" + _nS : _nS);
    
    var _nMs = _oDate.getMilliseconds();
    var _sMs = "" + (10 > _nMs ? "00" + _nMs : (100 > _nMs ? "0" + _nMs : _nMs));
    
    switch (_oPs.type) {
        case DUS.YMD:
            _sDate = _oDate.getFullYear() + _sM + _sD;
            break;
        case DUS.YMDHMS:
            _sDate = _oDate.getFullYear() + _sM + _sD + _sH + _sMi + _sS;
            break;
        case DUS.YMDHMSL:
            _sDate = _oDate.getFullYear() + _sM + _sD + _sH + _sMi + _sS + _sH + _sMi + _sS + _sMs;
            break;
        case DUS.Y_M_D:
            _sDate = _oDate.getFullYear() + "-" + _sM + "-" + _sD;
            break;
        case DUS.DOT_Y_M_D:
            _sDate = _oDate.getFullYear() + "." + _sM + "." + _sD;
            break;
        case DUS.CN_Y_M_D:
            _sDate = _oDate.getFullYear() + "年" + _sM + "月" + _sD + "日";
            break;
    }
    return _sDate;
};

/**
 * submit form in a ajax way
 * @param _oPs
 * @return
 */
var ajaxSubmit = function (_oPs) {
    if (_oPs) {
        var _oForm = document.getElementById(_oPs.id);
        if (_oForm) {
            
            // all valid data
            var _oData = {};
            var _aInputs = _oForm.elements;
            
            // fill valid data
            for (var i = 0; i < _aInputs.length; i += 1) {
                
                // if valid, fill
                if (_aInputs[i].name && !_aInputs[i].disabled) {
                    if (!_oData[_aInputs[i].name]) {
                        _oData[_aInputs[i].name] = [];
                    }
                    if ("checkbox" === _aInputs[i].type || "radio" === _aInputs[i].type) {
                        if (_aInputs[i].checked) {
                            _oData[_aInputs[i].name][_oData[_aInputs[i].name].length] = _aInputs[i].value;
                        }
                    } else if ("SELECT" === _aInputs[i].tagName) {
                        var _aOps = _aInputs[i].options;
                        for (var j  = 0; j < _aOps.length; j += 1) {
                            if (_aOps[j].selected) {
                                _oData[_aInputs[i].name][_oData[_aInputs[i].name].length] = _aOps[j].value;
                            }
                        }
                    } else {
                        _oData[_aInputs[i].name][_oData[_aInputs[i].name].length] = _aInputs[i].value;
                    }
                }
            }
            if ("function" === typeof _oPs.before) {
                _oPs.before();
            }
            $.post(_oForm.action, _oData, function (s) {
                if ("function" === typeof _oPs.after) {
                    _oPs.after();
                }
            });
        }
    }
};

/**
 * 将文本复制到剪切板
 */
function copyToClipboard(txt) {
    if (window.clipboardData) {
        window.clipboardData.clearData();
        window.clipboardData.setData("Text", txt);
        alert("复制成功!");
    } else if (navigator.userAgent.indexOf("Opera") != -1) {
        window.location = txt;
    } else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager
                    .enablePrivilege("UniversalXPConnect");
        } catch (e) {
            alert("您的firefox安全限制限制您进行剪贴板操作，请打开'about:config'将signed.applets.codebase_principal_support'设置为true'之后重试");
            return false;
        }
        var clip = Components.classes["@mozilla.org/widget/clipboard;1"]
                .createInstance(Components.interfaces.nsIClipboard);
        if (!clip)
            return;
        var trans = Components.classes["@mozilla.org/widget/transferable;1"]
                .createInstance(Components.interfaces.nsITransferable);
        if (!trans)
            return;
        trans.addDataFlavor('text/unicode');
        var str = new Object();
        var len = new Object();
        var str = Components.classes["@mozilla.org/supports-string;1"]
                .createInstance(Components.interfaces.nsISupportsString);
        var copytext = txt;
        str.data = copytext;
        trans.setTransferData("text/unicode", str, copytext.length * 2);
        var clipid = Components.interfaces.nsIClipboard;
        if (!clip)
            return false;
        clip.setData(trans, null, clipid.kGlobalClipboard);
        alert("复制成功!");
    }
}

function DateUtil() {
}
/**
 * *功能:格式化时间*示例:DateUtil.Format("yyyy/MM/dd","Thu Nov 9 20:30:37 UTC+0800 2006
 * ");*返回:2006/11/09
 */
DateUtil.Format = function(fmtCode, date) {
    var result, d, arr_d;
    var patrn_now_1 = /^y{4}-M{2}-d{2}\sh{2}:m{2}:s{2}$/;
    var patrn_now_11 = /^y{4}-M{1,2}-d{1,2}\sh{1,2}:m{1,2}:s{1,2}$/;
    var patrn_now_2 = /^y{4}\/M{2}\/d{2}\sh{2}:m{2}:s{2}$/;
    var patrn_now_22 = /^y{4}\/M{1,2}\/d{1,2}\sh{1,2}:m{1,2}:s{1,2}$/;
    var patrn_now_3 = /^y{4}年M{2}月d{2}日\sh{2}时m{2}分s{2}秒$/;
    var patrn_now_33 = /^y{4}年M{1,2}月d{1,2}日\sh{1,2}时m{1,2}分s{1,2}秒$/;
    var patrn_date_1 = /^y{4}-M{2}-d{2}$/;
    var patrn_date_11 = /^y{4}-M{1,2}-d{1,2}$/;
    var patrn_date_2 = /^y{4}\/M{2}\/d{2}$/;
    var patrn_date_22 = /^y{4}\/M{1,2}\/d{1,2}$/;
    var patrn_date_3 = /^y{4}年M{2}月d{2}日$/;
    var patrn_date_33 = /^y{4}年M{1,2}月d{1,2}日$/;
    var patrn_time_1 = /^h{2}:m{2}:s{2}$/;
    var patrn_time_11 = /^h{1,2}:m{1,2}:s{1,2}$/;
    var patrn_time_2 = /^h{2}时m{2}分s{2}秒$/;
    var patrn_time_22 = /^h{1,2}时m{1,2}分s{1,2}秒$/;
    if (!fmtCode) {
        fmtCode = "yyyy/MM/dd hh:mm:ss";
    }
    if (date) {
        d = new Date(date);
        if (isNaN(d)) {
            msgBox("时间参数非法\n正确的时间示例:\nThu Nov 9 20:30:37 UTC+0800 2006\n或\n2006/       10/17");
            return;
        }
    } else {
        d = new Date();
    }
    if (patrn_now_1.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.yyyy + "-" + arr_d.MM + "-" + arr_d.dd + " " + arr_d.hh
                + ":" + arr_d.mm + ":" + arr_d.ss;
    } else if (patrn_now_11.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.yyyy + "-" + arr_d.MM + "-" + arr_d.dd + " " + arr_d.hh
                + ":" + arr_d.mm + ":" + arr_d.ss;
    } else if (patrn_now_2.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.yyyy + "/" + arr_d.MM + "/" + arr_d.dd + " " + arr_d.hh
                + ":" + arr_d.mm + ":" + arr_d.ss;
    } else if (patrn_now_22.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.yyyy + "/" + arr_d.MM + "/" + arr_d.dd + " " + arr_d.hh
                + ":" + arr_d.mm + ":" + arr_d.ss;
    } else if (patrn_now_3.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.yyyy + "年" + arr_d.MM + "月" + arr_d.dd + "日" + " "
                + arr_d.hh + "时" + arr_d.mm + "分" + arr_d.ss + "秒";
    } else if (patrn_now_33.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.yyyy + "年" + arr_d.MM + "月" + arr_d.dd + "日" + " "
                + arr_d.hh + "时" + arr_d.mm + "分" + arr_d.ss + "秒";
    } else if (patrn_date_1.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.yyyy + "-" + arr_d.MM + "-" + arr_d.dd;
    } else if (patrn_date_11.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.yyyy + "-" + arr_d.MM + "-" + arr_d.dd;
    } else if (patrn_date_2.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.yyyy + "/" + arr_d.MM + "/" + arr_d.dd;
    } else if (patrn_date_22.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.yyyy + "/" + arr_d.MM + "/" + arr_d.dd;
    } else if (patrn_date_3.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.yyyy + "年" + arr_d.MM + "月" + arr_d.dd + "日";
    } else if (patrn_date_33.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.yyyy + "年" + arr_d.MM + "月" + arr_d.dd + "日";
    } else if (patrn_time_1.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.hh + ":" + arr_d.mm + ":" + arr_d.ss;
    } else if (patrn_time_11.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.hh + ":" + arr_d.mm + ":" + arr_d.ss;
    } else if (patrn_time_2.test(fmtCode)) {
        arr_d = splitDate(d, true);
        result = arr_d.hh + "时" + arr_d.mm + "分" + arr_d.ss + "秒";
    } else if (patrn_time_22.test(fmtCode)) {
        arr_d = splitDate(d);
        result = arr_d.hh + "时" + arr_d.mm + "分" + arr_d.ss + "秒";
    } else {
        msgBox("没有匹配的时间格式!");
        return;
    }
    return result;
};
function splitDate(d, isZero) {
    var yyyy, MM, dd, hh, mm, ss;
    if (isZero) {
        yyyy = d.getYear();
        MM = (d.getMonth() + 1) < 10 ? "0" + (d.getMonth() + 1) : d.getMonth()
                + 1;
        dd = d.getDate() < 10 ? "0" + d.getDate() : d.getDate();
        hh = d.getHours() < 10 ? "0" + d.getHours() : d.getHours();
        mm = d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes();
        ss = d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds();
    } else {
        yyyy = d.getYear();
        MM = d.getMonth() + 1;
        dd = d.getDate();
        hh = d.getHours();
        mm = d.getMinutes();
        ss = d.getSeconds();
    }
    return {
        "yyyy" : yyyy,
        "MM" : MM,
        "dd" : dd,
        "hh" : hh,
        "mm" : mm,
        "ss" : ss
    };
}

function msgBox(msg) {
    window.alert(msg);
}

function systime(formatStr) {
    var a = DateUtil.Format(formatStr, Date());
    return a;
}

// 清空
function ClearFormEelemnts(frmObj, contentCode) {
    frmObj.reset();
    for (var i = 0; i < frmObj.elements.length; i++) {
        var objTag = frmObj.elements(i);
        if ((objTag.tagName.toLowerCase() == "input")
                || (objTag.tagName.toLowerCase() == "textarea")) {
            if (objTag.type.toUpperCase() == "FILE") {
                objTag.fireEvent("onchange");
            }
        }
    }
}

// 检验手机号码

function checkMobile(value) {

    if (value > "") {
        var reg = /13[0,1,2,3,4,5,6,7,8,9]\d{8}/;
        if (value.match(reg) == null) {
            return false;
        }
    } else {
        return false;
    }
    return true;
}

// 检验移动手机号码

function validatePhone(value) {
    var reg = /13[5,6,7,8,9]\d{8}|134[0,1,2,3,4,5,6,7,8]\d{7}|15[8,9]\d{8}/;
    if (reg.test(value) && value.length == 11) {
        return true;
    } else {
        return false;
    }
}

// 2到10位数字，用于服务代码的校验

// add by liql
function servidalias(element_value) {

    re = /^[\d]{2,10}$/;
    if (!re.test(element_value)) {
        return false;
    }
    return true;
}
// @CheckItem@-liql-20041215-根据对象校验手机号码
function checkCMMobile(obj, name, notNull) {
    if (obj == null || obj.value == null) {
        alert("对象不存在！");
        return false;
    }
    if (notNull == true) {
        if (obj.value == null || obj.value == "") {
            alert("请输入" + name + "移动手机号码！");
            obj.focus();
            return false;
        }
    }
    if (obj.value.length > 0) {
        var reg = /^13[4,5,6,7,8,9]\d{8}$/;
        if (obj.value.match(reg) == null) {
            alert("请输入" + name + "正确的移动手机号码！");
            obj.focus();
            return false;
        }
    }
    return true;
}

function toChnDigit(num) {
    var t = parseInt(num);
    if (t == 0)
        return "零";
    if (t == 1)
        return "一";
    if (t == 2)
        return "二";
    if (t == 3)
        return "三";
    if (t == 4)
        return "四";
    if (t == 5)
        return "五";
    if (t == 6)
        return "六";
    if (t == 7)
        return "七";
    if (t == 8)
        return "八";
    if (t == 9)
        return "九";
    return "";
}
// @CheckItem@ OPT-HuTie-20031208 优化：添加屏蔽所有按钮的公用函数

function disableAllButtons() {
    for (var i = 0; i < document.all.tags("input").length; i++) {
        var tmp = document.all.tags("input")[i];
        if (tmp.type == "button" || tmp.type == "submit" || tmp.type == "reset") {
            tmp.disabled = true;
        }
    }
}

// 增加trim函数
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

// 函数名：checkNUM
// 功能介绍：检查是否为数字
// 参数说明：要检查的数字
// 返回值：1为是数字，0为不是数字

function checkNum(Num) {
    var i, j, strTemp;
    strTemp = "0123456789.";
    if (Num.length == 0)
        return 0
    for (i = 0; i < Num.length; i++) {
        j = strTemp.indexOf(Num.charAt(i));
        if (j == -1) {
            // 说明有字符不是数字

            return 0;
        }
    }
    // 说明是数字

    return 1;
}

// 函数名：checkNUM
// 功能介绍：检查是否为数字
// 参数说明：要检查的数字
// 返回值：1为是数字，0为不是数字

function checkIntNum(Num) {
    var i, j, strTemp;
    strTemp = "0123456789";
    if (Num.length == 0)
        return 0
    for (i = 0; i < Num.length; i++) {
        j = strTemp.indexOf(Num.charAt(i));
        if (j == -1) {
            // 说明有字符不是数字

            return 0;
        }
    }
    // 说明是数字

    return 1;
}

// 函数名：checkEmail
// 功能介绍：检查是否为Email Address
// 参数说明：要检查的字符串

// 返回值：0：不是 1：是
/**
 * @CheckItem@ zhou_jx-20041231 校正对'.'的判断

 *             （判断的规则是不能以'@'或'.'开头，'@'后面至少要有三个字符，不能以'.'结束）

 */
// ADD BY LIQL 与SP资料添加的一致

function checkEmail(a) {

    re = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
    if (!re.test(a)) {

        return 0;
    }
    return 1;
}

/*
 * function checkEmail(a) { var i=a.length; var temp = a.indexOf('@'); var tempd =
 * a.indexOf('.'); if (temp >= 1 && tempd >= 5) { if ((i-temp) > 3){ if
 * ((i-tempd)>1){ return 1; } } } return 0; }
 */

// 函数名：checkTEL
// 功能介绍：检查是否为电话号码
// 参数说明：要检查的字符串

// 返回值：1为是合法，0为不合法
function checkTel(tel) {
    var i, j, strTemp;
    strTemp = "0123456789-－";
    for (i = 0; i < tel.length; i++) {
        j = strTemp.indexOf(tel.charAt(i));
        if (j == -1) {
            // 说明有字符不合法
            return 0;
        }
    }
    // 说明合法
    return 1;
}

// 函数名：checkLength
// 功能介绍：检查字符串的长度

// 参数说明：要检查的字符串

// 返回值：长度值

function checkLength(strTemp) {
    var i, sum;
    sum = 0;
    for (i = 0; i < strTemp.length; i++) {
        // @CheckItem@ BUG-Renhj-20040604 优化：将验证的函数改成128以类的为单字符。避免“·”符号

        // if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255))
        if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 128))
            sum = sum + 1;
        else
            sum = sum + 2;
    }
    return sum;
}

// 函数名：checkSafe
// 功能介绍：检查是否含有"'", '"',"<", ">"
// 参数说明：要检查的字符串

// 返回值：0：是 1：不是

function checkSafe(a) {
    // fibdn = new Array ("'" ,'"',">", "<", "、", ",", ";");
    fibdn = new Array("'", '"', ">", "<");
    i = fibdn.length;
    j = a.length;
    for (ii = 0; ii < i; ii++) {
        for (jj = 0; jj < j; jj++) {
            temp1 = a.charAt(jj);
            temp2 = fibdn[ii];
            if (temp1 == temp2) {
                return 0;
            }
        }
    }
    return 1;
}

// 函数名：checkChar
// 功能介绍：检查是否含有非字母字符
// 参数说明：要检查的字符串

// 返回值：0：含有 1：全部为字母
function checkChar(str) {
    var strSource = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.()& ";
    var ch;
    var i;
    var temp;

    for (i = 0; i <= (str.length - 1); i++) {
        ch = str.charAt(i);
        temp = strSource.indexOf(ch);
        if (temp == -1) {
            return 0;
        }
    }
    return 1;
}
/*
 * 检查只有数字和26个字母 //返回值：0：含有 1：全部为数字或字母

 */
function checkCharOrNum(str) {
    var strSource = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var ch;
    var i;
    var temp;

    for (i = 0; i <= (str.length - 1); i++) {

        ch = str.charAt(i);
        temp = strSource.indexOf(ch);
        if (temp == -1) {
            return 0;
        }
    }
    return 1;
}
/*
 * 检查业务代码 //返回值：0：不正确 1：正确

 */
function checkIcpServId(str) {
    var strSource = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-";
    var ch;
    var i;
    var temp;

    for (i = 0; i <= (str.length - 1); i++) {

        ch = str.charAt(i);
        temp = strSource.indexOf(ch);
        if (temp == -1) {
            return 0;
        }
    }
    return 1;
}
/*
 * 检查非法字符 //返回值：0：不正确 1：正确

 */
function checkFormChar(str) {
    var strSource = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
    var ch;
    var i;
    var temp;

    for (i = 0; i <= (str.length - 1); i++) {

        ch = str.charAt(i);
        temp = strSource.indexOf(ch);
        if (temp == -1) {
            return 0;
        }
    }
    return 1;
}
// 函数名：checkCharOrDigital
// 功能介绍：检查是否含有非数字或字母

// 参数说明：要检查的字符串

// 返回值：0：含有 1：全部为数字或字母

function checkCharOrDigital(str) {
    var strSource = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.()& ";
    var ch;
    var i;
    var temp;

    for (i = 0; i <= (str.length - 1); i++) {

        ch = str.charAt(i);
        temp = strSource.indexOf(ch);
        if (temp == -1) {
            return 0;
        }
    }
    return 1;
}

// 函数名：checkChinese
// 功能介绍：检查是否含有汉字

// 参数说明：要检查的字符串

// 返回值：0：含有 1：没有

function checkChinese(strTemp) {
    var i, sum;
    for (i = 0; i < strTemp.length; i++) {
        if ((strTemp.charCodeAt(i) < 0) || (strTemp.charCodeAt(i) > 255))
            return 0;
    }
    return 1;
}

// 函数名：compareTime()
// 功能介绍： 比较时间大小
// 参数说明：beginYear开始年，beginMonth开始月,benginDay开始日,beginH开始小时，beginM开始分钟，
// endYear结束年，endMonth结束月，endMonth结束日,endH结束小时，endM结束分钟
// 返回值：true 表示 开始时间大于结束时间，false 相反
// @CheckItem@ SELBUG-Tanyi-20030707 修改时间校验
function compareTime(beginYear, beginMonth, benginDay, beginH, beginM, endYear,
        endMonth, endDay, endH, endM) {
    var date1 = new Date(beginYear, beginMonth - 1, benginDay, beginH, beginM);
    var date2 = new Date(endYear, endMonth - 1, endDay, endH, endM);
    if (date1.getTime() >= date2.getTime()) {
        return false;
    }
    return true;
}

// 函数名：compareDate()
// 功能介绍： 比较日期大小
// 参数说明：beginYear开始年，beginMonth开始月,benginDay开始日
// endYear结束年，endMonth结束月，endMonth结束日

// 返回值：0：true 表示 开始时间大于结束时间，false 相反
// @CheckItem@ BUG320-TANYI-20040304 修改日期比较方法，将CS和PS统一
// @CheckItem@ BUG320-renhj-20040310 修改日期比较方法，将CS和PS统一
function compareDate(beginYear, beginMonth, benginDay, endYear, endMonth,
        endDay) {
    var date1 = new Date(beginYear, beginMonth - 1, benginDay);
    var date2 = new Date(endYear, endMonth - 1, endDay);
    if (date1.getTime() >= date2.getTime()) {
        return false;
    }
    return true;
}
function compareDate2(beginYear, beginMonth, benginDay, endYear, endMonth,
        endDay) {
    var date1 = new Date(beginYear, beginMonth - 1, benginDay);
    var date2 = new Date(endYear, endMonth - 1, endDay);
    if (date1.getTime() > date2.getTime()) {
        return false;
    }
    return true;
}
// 函数名：checkURL
// 功能介绍：检查Url是否合法
// 参数说明：要检查的字符串

// 返回值：true：合法 false：不合法。

function checkURL(strTemp) {
    if (strTemp.length == 0)
        return false;
    if (checkChinese(strTemp) == 0)
        return false;
    if (strTemp.toUpperCase().indexOf("HTTP://") != 0
            && strTemp.toUpperCase().indexOf("HTTPS://") != 0) {
        return false;
    }
    return true;
}

// @CheckItem@ OPT-Renhj-20030704 提供公共的去处空格的方法
// 清除左边空格
function js_ltrim(deststr) {
    if (deststr == null)
        return "";
    var pos = 0;
    var retStr = new String(deststr);
    if (retStr.lenght == 0)
        return retStr;
    while (retStr.substring(pos, pos + 1) == " ")
        pos++;
    retStr = retStr.substring(pos);
    return (retStr);
}
// 清除右边空格
function js_rtrim(deststr) {
    if (deststr == null)
        return "";
    var retStr = new String(deststr);
    var pos = retStr.length;
    if (pos == 0)
        return retStr;
    while (pos && retStr.substring(pos - 1, pos) == " ")
        pos--;
    retStr = retStr.substring(0, pos);
    return (retStr);
}
// 清除左边和右边空格

function js_trim(deststr) {
    if (deststr == null)
        return "".trim();
    var retStr = new String(deststr);
    var pos = retStr.length;
    if (pos == 0)
        return retStr.trim();
    retStr = js_ltrim(retStr);
    retStr = js_rtrim(retStr);
    return retStr.trim();
}
// 格式化输入的日期串，输入的如："2003-9-12" 输出："2003-09-12"
function formatDateStr(inDate) {
    if (inDate == null || inDate == "")
        return "";
    var beginDate = inDate.split("-");
    var mYear = beginDate[0];
    var mMonth = beginDate[1];
    var mDay = beginDate[2];
    mMonth = ((mMonth.length == 1) ? ("0" + mMonth) : mMonth);
    mDay = ((mDay.length == 1) ? ("0" + mDay) : mDay);
    return mYear + "-" + mMonth + "-" + mDay;
}

// obj:数据对象
// dispStr :失败提示内容显示字符串

function checkUrlValid(obj, dispStr) {
    if (obj == null) {
        alert("传入对象为空");
        return false;
    }
    var str = obj.value;

    var urlpatern0 = /^https?:\/\/.+$/i;
    if (!urlpatern0.test(str)) {
        alert(dispStr + "不合法：必须以'http:\/\/'或'https:\/\/'开头!");
        obj.focus();
        return false;
    }

    var urlpatern2 = /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?.+$/i;
    if (!urlpatern2.test(str)) {
        alert(dispStr + "端口号必须为数字且应在1－65535之间!");
        obj.focus();
        return false;
    }

    var urlpatern1 = /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;

    if (!urlpatern1.test(str)) {
        alert(dispStr + "不合法,请检查!");
        obj.focus();
        return false;
    }

    var s = "0";
    var t = 0;
    var re = new RegExp(":\\d+", "ig");
    while ((arr = re.exec(str)) != null) {

        s = str.substring(RegExp.index + 1, RegExp.lastIndex);

        if (s.substring(0, 1) == "0") {
            alert(dispStr + "端口号不能以0开头!");
            obj.focus();
            return false;
        }

        t = parseInt(s);
        if (t < 1 || t > 65535) {
            alert(dispStr + "端口号必须为数字且应在1－65535之间!");
            obj.focus();
            return false;
        }

    }
    return true;
}

// 函数名：checkVisibleEnglishChr
// 功能介绍：检查是否为可显示英文字符(
// !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)
// 参数说明：要检查的字符串

// 返回值：true|false
// add by renhj 2004.01.05
function checkVisibleEnglishChr(strTemp) {
    var i;
    for (i = 0; i < strTemp.length; i++) {
        if ((strTemp.charCodeAt(i) < 32) || (strTemp.charCodeAt(i) > 126))
            return false;
    }
    return true;
}
// 函数名：checkareaInput
// 功能介绍：检查是否含有非textarea字符
// 参数说明：要检查的字符串

// 返回值：false：含有 true：全部为可textarea字符
// add by liql 2005.01.05
function checkareaInput(str) {
    var notinput = "<>";
    var i;
    for (i = 0; notinput != null && i < notinput.length; i++) {
        if (str.indexOf(notinput.charAt(i)) >= 0) {// 若有
            return false;
        }
    }
    return true;

}
// 函数名：checkInputChr
// 功能介绍：检查是否含有非Input字符
// 参数说明：要检查的字符串

// 返回值：false：含有 true：全部为可Input字符
// add by renhj 2004.01.05
function checkInputChr(str) {
    var notinput = "\"'<>@#$%^&*()";
    var i;
    for (i = 0; notinput != null && i < notinput.length; i++) {
        if (str.indexOf(notinput.charAt(i)) >= 0) {// 若有
            return false;
        }
    }
    return true;

}
// 函数名：checktextareaInput
// 功能介绍：检查是否含有非Input字符<,>
// 参数说明：要检查的字符串

// 返回值：false：含有 true：全部为可Input字符
// add by liql 2004.12.31
function checktextareaInput(str) {
    var notareainput = "<>_";
    var i;
    for (i = 0; notareainput != null && i < notareainput.length; i++) {
        if (str.indexOf(notareainput.charAt(i)) >= 0) {// 若有
            return false;
        }
    }
    return true;

}
// @CheckItem@ BUG550-liujun-20040528 拷贝cs的checkForm.js中的checkFormdate函数
// 函数名：checkFormdata
// 功能介绍：检查Form对象
// 参数说明：

// obj：要检查的对象，

// name：要检查的对象的中文名称，
// length：检查的对象的长度（<0不检查），

// notnull:为true则检查非空，
// notSpecChar:为true则检查有无特殊字符，
// notChinessChar:为true则检查有无中文字符，
// numOrLetter:为true则检查只能为数字或英文字母，
// pNumber:为true则检查只能为正整数，
// 返回值：false：检查不通过 true：全部为可Input字符
// add by renhj 2004.03.19
// @CheckItem@ BUG:1641:718-Renhj-20040902-Add5 修改校验数字的信息

function checkFormdata(obj, name, length, notnull, notSpecChar, notChinessChar,
        numOrLetter, pNumber) {
    // 检查对象

    if (!obj) {
        alert("目标不是对象，处理失败!");
        return false;
    }
    var msg;
    var ilen;
    // 检测汉字

    if (notChinessChar && (checkChinese(obj.value) != 1)) {
        msg = name + "不能包含汉字！";
        alert(msg);
        obj.focus();
        return false;
    }
    // 检测特殊字符

    if (notSpecChar) {
        if (obj.type == "textarea") {
            if (!checktextareaInput(obj.value)) {
                var noinput = " < > _ ";
                msg = name + "有非法字符（" + noinput + "）！";
                alert(msg);
                obj.focus();
                return false;
            }

        } else {
            if (!checkInputChr(obj.value)) {
                var notinput = " \" ' < > @ # $ % ^ & * ( )";
                msg = name + "有非法字符（" + notinput + "）！";
                alert(msg);
                obj.focus();
                return false;
            }

        }
    }
    // 检测长度

    if (length >= 0 && (checkLength(obj.value) > length)) {
        ilen = length / 2;
        if (pNumber) {
            msg = name + "不能超过" + length + "个数字！";
        } else if (notChinessChar) {
            msg = name + "不能超过" + length + "个英文！";
        } else if (numOrLetter) {
            msg = name + "不能超过" + length + "个英文或数字！";
        } else {
            msg = name + "不能超过" + length + "个英文或" + ilen + "个汉字！";
        }
        alert(msg);
        obj.focus();
        return false;
    }
    // 检测非空

    if (notnull && obj.value.trim() == "") {
        msg = "请输入" + name + "！";
        alert(msg);
        obj.focus();
        return false;
    }
    // 检测只能为数字或英文字母

    re = /[\W_]/;
    if (numOrLetter && re.exec(obj.value)) {
        msg = name + "只能为数字或英文字母！";
        alert(msg);
        obj.focus();
        return false;
    }
    // 检测只能为只能为正整数
    re = /[\D_]/;
    if (pNumber && re.exec(obj.value)) {
        msg = name + "只能为正整数！";
        alert(msg);
        obj.focus();
        return false;
    }

    return true;

}

// 函数名：checkFormdataDispLbl
// 功能介绍：检查Form对象
// 参数说明：

// obj：要检查的对象，

// name：要检查的对象的中文名称，
// lbl: 显示错误的label标签名

// length：检查的对象的长度（<0不检查），

// notnull:为true则检查非空，
// notSpecChar:为true则检查有无特殊字符，
// notChinessChar:为true则检查有无中文字符，
// numOrLetter:为true则检查只能为数字或英文字母，
// pNumber:为true则检查只能为正整数，
// 返回值：false：检查不通过 true：全部为可Input字符
// modify by duansky 2008.12.22
// @CheckItem@ BUG:1641:718-Renhj-20040902-Add5 修改校验数字的信息

function checkFormdataDispLbl(obj, name, lbl, length, notnull, notSpecChar,
        notChinessChar, numOrLetter, pNumber) {
    // 检查对象

    if (!obj) {
        alert("目标不是对象，处理失败!");
        return false;
    }
    
    // 检查label
    if (!lbl) {
        alert("label不是对象，处理失败!");
        return false;
    }
    
    var msg;
    var ilen;
    // 检测汉字

    if (notChinessChar && (checkChinese(obj.value) != 1)) {
        msg = name + "不能包含汉字！";
        lbl.innerHTML = msg;
        obj.focus();
        return false;
    }
    // 检测特殊字符

    if (notSpecChar) {
        if (obj.type == "textarea") {
            if (!checktextareaInput(obj.value)) {
                var noinput = " < > _ ";
                msg = name + "有非法字符（" + noinput + "）！";
                lbl.innerHTML = msg;
                obj.focus();
                return false;
            }

        } else {
            if (!checkInputChr(obj.value)) {
                var notinput = " \" ' < > @ # $ % ^ & * ( )";
                msg = name + "有非法字符（" + notinput + "）！";
                lbl.innerHTML = msg;
                obj.focus();
                return false;
            }

        }
    }
    // 检测长度

    if (length >= 0 && (checkLength(obj.value) > length)) {
        ilen = length / 2;
        if (pNumber) {
            msg = name + "不能超过" + length + "个数字！";
        } else if (notChinessChar) {
            msg = name + "不能超过" + length + "个英文！";
        } else if (numOrLetter) {
            msg = name + "不能超过" + length + "个英文或数字！";
        } else {
            msg = name + "不能超过" + length + "个英文或" + ilen + "个汉字！";
        }
        lbl.innerHTML = msg;
        obj.focus();
        return false;
    }
    // 检测非空

    if (notnull && obj.value.trim() == "") {
        msg = "请输入" + name + "！";
        lbl.innerHTML = msg;
        obj.focus();
        return false;
    }
    // 检测只能为数字或英文字母

    re = /[\W_]/;
    if (numOrLetter && re.exec(obj.value)) {
        msg = name + "只能为数字或英文字母！";
        lbl.innerHTML = msg;
        obj.focus();
        return false;
    }
    // 检测只能为只能为正整数
    re = /[\D_]/;
    if (pNumber && re.exec(obj.value)) {
        msg = name + "只能为正整数！";
        lbl.innerHTML = msg;
        obj.focus();
        return false;
    }

    return true;
}

// 清除左边关键字符
function js_ltrim_key(deststr, key_char) {
    if (deststr == null)
        return "";
    var pos = 0;
    var retStr = new String(deststr);
    if (retStr.lenght == 0)
        return retStr;
    while (retStr.substring(pos, pos + 1) == key_char)
        pos++;
    retStr = retStr.substring(pos);
    return (retStr);
}
// 清除左边关键字符
function js_rtrim_key(deststr, key_char) {
    if (deststr == null)
        return "";
    var retStr = new String(deststr);
    var pos = retStr.length;
    if (pos == 0)
        return retStr;
    while (pos && retStr.substring(pos - 1, pos) == key_char)
        pos--;
    retStr = retStr.substring(0, pos);
    return (retStr);
}
// 清除左边和右边关键字符

function js_trim_key(deststr, key_char) {
    if (deststr == null)
        return "".trim();
    var retStr = new String(deststr);
    var pos = retStr.length;
    if (pos == 0)
        return retStr.trim();
    retStr = js_ltrim_key(retStr, key_char);
    retStr = js_rtrim_key(retStr, key_char);
    return retStr.trim();
}

function checkLength2(strTemp, key_char) {
    var sum = 0;
    var c = '';
    for (var i = 0; i < strTemp.length; i++) {
        c = strTemp.charAt(i);

        if (c == key_char) {
            sum = sum + 1;
        }

    }
    return sum;
}

// 字符串变字符串数据，除掉关键字符key_char
function stringToArray(src, key_char) {
    var source = js_trim_key(src, key_char);
    if (source != null && source != "") {
        var num = checkLength2(source, key_char);
        var srcArray = new Array(num + 1);
        for (var i = 0; i < num + 1; i++) {
            srcArray[i] = stringToArray2(source, key_char);
            source = source.substring(srcArray[i].length, source.length);
            source = js_trim_key(source, key_char);
        }
        return srcArray;
    }
    return "";

}

function stringToArray2(src, key_char) {
    var s = src.indexOf(key_char);
    if (s > -1)
        return src.substring(0, s);
    else
        return src;

}

// 函数名：ValidateIP
// 功能介绍：验证ip地址格式
// 参数说明：

// obj：要检查的对象，

// name：要检查的对象的中文名称，
function ValidateIP(name, obj, notnull) {
    var msg = "";
    if (obj == null) {
        msg = "对象不能为空！";
        return false;
    }
    // 检测非空

    if (notnull && obj.value.trim() == "") {
        msg = "请输入" + name + "！";
        alert(msg);
        obj.focus();
        return false;
    }
    right_title = "是一个非法的IP地址段！\nIP段为：xxx.xxx.xxx.xxx（xxx为0-255)！";
    re = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;

    if (!re.test(obj.value)) {
        msg = name + right_title;
        alert(msg);
        obj.focus();
        return false;
    }
    return true;
}

function StrToDate(strDate) {
    var splitArray;
    var str = "";
    str = strDate;
    splitArray = str.split("-");
    if (splitArray.length != 3)
        return new Date();
    // for(var i=0; i<splitArray.length; i++)
    // {
    // if( isNaN(splitArray) ) return new Date();
    // }
    return new Date(splitArray[0], splitArray[1] - 1, splitArray[2]);
}

/* Added by bocen.li for enable/unable edition for form elements */
function ChgFormEdition(frmObj, enable) {
    for (var i = 0; i < frmObj.elements.length; i++) {
        var objTag = frmObj.elements(i);
        if ((objTag.tagName.toLowerCase() == "input")
                || (objTag.tagName.toLowerCase() == "textarea")) {

            if (objTag.type.toUpperCase() != "BUTTON"
                    && objTag.type.toUpperCase() != "HIDDEN"
                    && objTag.type.toUpperCase() != "IMAGE"
                    && objTag.type.toUpperCase() != "SUBMIT"
                    && objTag.type.toUpperCase() != "RESET"
                    && objTag.type.toUpperCase() != "FILE")
                objTag.readOnly = !enable;
            if (objTag.type.toUpperCase() == "FILE" && !enable)
                objTag.style.display = "none";

            if (objTag.tagName.toUpperCase() == "TEXTAREA")
                objTag.readOnly = !enable;
        }
        if (objTag.tagName.toLowerCase() == "select")
            objTag.disabled = !enable;
    }
}

// add keywords
function checkKeywords(str) {
    var notinput = "\"'<>_~`!@#$%^&*()+-?\/\\";
    var i;
    for (i = 0; i < notinput.length; i++) {
        if (str.indexOf(notinput.charAt(i)) >= 0) {// 若有
            return false;
        }
    }
    return true;
}

function trimAll(s) {
    if (s == null || s == "") {
        return "";
    }

    while (s.charAt(0) == " " || s.charAt(0) == "　" || s.charAt(0) == "\t"
            || s.charAt(0) == "\r" || s.charAt(0) == "\n") {
        s = s.substring(1, s.length);
    }

    while (s.charAt(s.length - 1) == " " || s.charAt(s.length - 1) == "　"
            || s.charAt(s.length - 1) == "\t" || s.charAt(s.length - 1) == "\r"
            || s.charAt(s.length - 1) == "\n") {
        s = s.substring(0, s.length - 1);
    }
    return s;
}

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
}

String.prototype.convert2Html = function() {

    return this.replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll(' ',
            '&nbsp;').replaceAll('\r\n', '<br>');
}


/**
 * ****************************END!*************************
 */

/*
 * 说明：
 * 使用jQuery，IE8下，iframe的$.load方法的事件无效，只能用自己的onload方法
 * iframe的页面必须引入jQuery
 * $().height() === $(document).height()，其中document是jQuery所有页面的document
 * $ === window.$
 * <iframe src="" onload="autoHeight(this)"></iframe>
 * 之所以要写在标签里面，是因为如果在外面定义的话，IE只会执行一次(firefox safari 正常)
 * 直接在标签里面定义的话，改变一次src就会执行一次
 */
var autoHeight = function (iframe) {
    if (iframe) {
        var CW = iframe.contentWindow;
        if (CW && CW.$) {
            $(iframe).height(CW.$().height());
        }
    }
}

/*
 * ready 在 laod 之前执行
 */
$(function () {}) === $(document).ready()

